import { jStat } from 'jstat'
/**
 * 计算平均值
 */
export const average = (arr: number[]) => {
  jStat.mean(arr)
}

/**
 * 计算标准差
 */
export const std = (arr: number[]) => {
  jStat.stdev(arr)
}

/**
 * 计算显著性
 */
export const significant = (value: number, average: number, std: number) => (value - average) / std

/**
 * 校验是否合适正态分布
 **/
export const checkNormal = (arr: number[]) => {
  // 计算数据的均值和标准差
  const mean = jStat.mean(arr)
  const stdDev = jStat.stdev(arr, true)
  console.log(stdDev)
  // 使用正态分布的概率密度函数计算数据的概率
  const prob = jStat.normal.pdf(arr, mean, stdDev)

  // 判断数据的概率是否符合正态分布的特征
  const isNormal = prob.every((p) => p > 0 && p < 0.5)

  return isNormal
}

/**
 * 百分90分位数
 */
export const percentile = (arr: number[], num: number) => {
  const sorted = [...arr].sort((a, b) => a - b)
  return sorted[Math.floor((sorted.length - 1) * num)]
}

/**
 * 最大值90%
 * */
export const max90 = (arr: number[]) => percentile(arr, 0.9)
